import 'dart:convert';

/// 像素画模型
class PixelArt {
  final String id;              // 唯一标识
  final int userId;             // 创建者ID
  final String imageUrl;        // 图片URL（透明背景）
  final double latitude;        // 纬度
  final double longitude;       // 经度
  final double width;           // 宽度（米）
  final double height;          // 高度（米）
  final double rotation;        // 旋转角度
  final double opacity;         // 透明度 0-1
  final int zIndex;             // 层级（用于控制叠加顺序）
  final DateTime createTime;    // 创建时间
  final String? title;          // 标题（可选）
  final String? description;    // 描述（可选）
  
  PixelArt({
    required this.id,
    required this.userId,
    required this.imageUrl,
    required this.latitude,
    required this.longitude,
    this.width = 100.0,         // 默认100米
    this.height = 100.0,        // 默认100米
    this.rotation = 0.0,
    this.opacity = 1.0,
    this.zIndex = 0,
    required this.createTime,
    this.title,
    this.description,
  });

  factory PixelArt.fromJson(Map<String, dynamic> json) {
    return PixelArt(
      id: json['id'] ?? '',
      userId: json['userId'] ?? 0,
      imageUrl: json['imageUrl'] ?? '',
      latitude: (json['latitude'] ?? 0).toDouble(),
      longitude: (json['longitude'] ?? 0).toDouble(),
      width: (json['width'] ?? 100.0).toDouble(),
      height: (json['height'] ?? 100.0).toDouble(),
      rotation: (json['rotation'] ?? 0.0).toDouble(),
      opacity: (json['opacity'] ?? 1.0).toDouble(),
      zIndex: json['zIndex'] ?? 0,
      createTime: json['createTime'] != null 
          ? DateTime.parse(json['createTime']) 
          : DateTime.now(),
      title: json['title'],
      description: json['description'],
    );
  }

  Map<String, dynamic> toJson() {
    return {
      'id': id,
      'userId': userId,
      'imageUrl': imageUrl,
      'latitude': latitude,
      'longitude': longitude,
      'width': width,
      'height': height,
      'rotation': rotation,
      'opacity': opacity,
      'zIndex': zIndex,
      'createTime': createTime.toIso8601String(),
      'title': title,
      'description': description,
    };
  }

  String toJsonString() {
    return jsonEncode(toJson());
  }
}

